package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.Unit;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @description 商品信息
 */
@Repository
public interface GoodsDao {


    String getMaxCode();

    // 首页库存列表查询
    List<Goods> listInventory(@Param("pageNo") Integer page,@Param("size") Integer rows,@Param("codeOrName") String codeOrName,
                                      @Param("goodsTypeId")String goodsTypeId);

    // 所有商品单位哦
    List<Unit> unitList();

    // 商品管理，分页展示，可搜索
    List<Goods> selectGoodsList(@Param("page") Integer page,@Param("rows") Integer rows,
                                @Param("goodsName") String goodsName,@Param("goodsTypeId") String goodsTypeId);

    // 更新商品
    void updateById(Goods goods);

    // 保存商品
    void save(Goods goods);

    // 删除商品
    void deleteById(Integer goodsId);

    // 查询goods
    Goods selectById(Integer goodsId);
    // 无库存列表
    List<Goods> getNoInventoryQuantity(@Param("page") Integer page,@Param("rows") Integer rows,@Param("nameOrCode") String nameOrCode);

    // 有库存列表
    List<Goods> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode);


    // 根据id更新库存
    void updateStockById(@Param("goodsId") Integer goodsId, @Param("inventoryQuantity") Integer inventoryQuantity,
                         @Param("purchasingPrice") Double purchasingPrice);
    // 查询所有 当前库存量 小于 库存下限的商品信息
    List<Goods> listAlarm();


}
